/**
 * \file PluginInterface_Win32.h
 * \brief Plugin interface declaration class for Windows platforms
 * \author Edouard ROGE
 * \date 16 March 2013
 */
#ifndef _PLUGININTERFACE_WIN32_
#define _PLUGININTERFACE_WIN32_

#include "Core/String/String.h"
#include "Core/Memory/HeapObject.h"

/**
 * \class PluginInterface
 * \brief Base class for every plug-in interface
 */
class PluginInterface : public HeapObject
{
public:

	/**
	 * \fn const String & GetName() const;
	 * \return Plug-in name
	 * \brief Get the name of the plug-in
	 */
	const String & GetName() const;
};

#define EXPORT_PLUGIN(PluginClass)	extern "C"\
{\
	__declspec(dllexport) PluginInterface * CreatePlugin () { return new PluginClass(); }\
	__declspec(dllexport) void ReleasePlugin (PluginInterface * _pPlugin) { delete _pPlugin; }\
}

#endif // _PLUGININTERFACE_WIN32_
